/**
 * 
 */
package ec.edu.uce.tour.web.catalogos.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import ec.edu.uce.tour.excepcion.UceTourException;
import ec.edu.uce.tour.facade.UceTourGeneralServicio;
import ec.edu.uce.tour.modelo.TipoHabitacionTbl;
import ec.edu.uce.tour.web.utilitarios.Utilitario;



/**
 * @author XPS15Z
 *
 */
@ManagedBean (name="tipoHabitacionController")
@ViewScoped

public class TipoHabitacionController implements Serializable {
	
	
	private static final long serialVersionUID = 1L;
	private String codigoTipoHabitacion;
	private String nombreTipoHabitacion;
	
	private Integer idEstadoTipoHabitacion;
	private List<SelectItem> listaEstado = new ArrayList<SelectItem>(){
		
		private static final long serialVersionUID = 1L;
		{
			add(new SelectItem(1,"Activo"));
			add(new SelectItem(2,"Inactivo"));
		}
		
	};
	
	private Integer idTipoHabitacion;
	private List<TipoHabitacionTbl> listaHabitacion = new ArrayList<TipoHabitacionTbl>();
	
	@EJB 
	private UceTourGeneralServicio uceTourGeneralServicio;
	
	@PostConstruct
	public void init()
	{
		FacesContext.getCurrentInstance().getExternalContext()
	     .getSession(true);
		obtenerTablaTipoHabitacion ();
	}
	
	/**
	 * Metodo que guarda el pais
	 */
	
	public void guardarTipoHabitacion()
	{ 
		try{
			if(!nombreTipoHabitacion.trim().equals("")
					&& !codigoTipoHabitacion.trim().equals("")){
				TipoHabitacionTbl tipoHabitacion = new TipoHabitacionTbl();
				tipoHabitacion.setTipHabCodigo(codigoTipoHabitacion);
				tipoHabitacion.setTipHabNombre(nombreTipoHabitacion);
				tipoHabitacion.setTipHabEstado(idEstadoTipoHabitacion==1? "A":"I");
				String mensaje="";
				if(idTipoHabitacion !=0){
					tipoHabitacion.setTipHabIdPk(idTipoHabitacion);
					mensaje = "Se ha actualizado correctamente el Tipo de Habitacion.";
					try {
						uceTourGeneralServicio.modificarCatalogo( tipoHabitacion);
						idTipoHabitacion = null;
						obtenerTablaTipoHabitacion();
					} catch (UceTourException e) {
						// TODO Auto-generated catch block
						Utilitario.mensajeError(e.getLocalizedMessage(), e);
					} catch (Throwable e) {
						// TODO Auto-generated catch block
						Utilitario.mensajeError(e.getLocalizedMessage(), e);
					}
				}else {
					try {
						uceTourGeneralServicio.guardarCatalogo(tipoHabitacion);
						mensaje = "Se ha guardado correctamente.";
						obtenerTablaTipoHabitacion();
					} catch (UceTourException e) {
						// TODO Auto-generated catch block
						Utilitario.mensajeError(e.getLocalizedMessage(), e);
					} catch (Throwable e) {
						// TODO Auto-generated catch block
						Utilitario.mensajeError(e.getLocalizedMessage(), e);
					}
				}
				Utilitario.mensajeInformativo(mensaje);
			} else {
				Utilitario.mensajeError("Por favor ingrese valores validos",null);
			}
		} catch (Throwable e) {
			Utilitario.mensajeError(e.getLocalizedMessage(), e);
		}

	}
				
	
	private void obtenerTablaTipoHabitacion() {
		// TODO Auto-generated method stub
		try {
			listaHabitacion = uceTourGeneralServicio.obtenerListaCatalogos(TipoHabitacionTbl.class);
		} catch (UceTourException e) {
			// TODO Auto-generated catch block
			Utilitario.mensajeError(e.getLocalizedMessage(), e);
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			Utilitario.mensajeError(e.getLocalizedMessage(), e);
		}
	}
	
	public void editarTipoHabitacion(Integer idTipoHabitacion) {
		this.idTipoHabitacion = idTipoHabitacion;
		try {
			TipoHabitacionTbl tipoHabitacionActual = (TipoHabitacionTbl) uceTourGeneralServicio
					.cargarCatalogoPorId(TipoHabitacionTbl.class, idTipoHabitacion);
			nombreTipoHabitacion = tipoHabitacionActual.getTipHabNombre();
			idEstadoTipoHabitacion = tipoHabitacionActual.getTipHabEstado().equals("A") ? 1: 0;
			codigoTipoHabitacion = tipoHabitacionActual.getTipHabCodigo();

		} catch (UceTourException e) {
			// TODO Auto-generated catch block
			Utilitario.mensajeError(e.getLocalizedMessage(), e);
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			Utilitario.mensajeError(e.getLocalizedMessage(), e);
		}
	}


	public void cancelarTipoHabitacion()
	{
		init();
		idTipoHabitacion=null;
		codigoTipoHabitacion="";
		nombreTipoHabitacion="";
	}

	/**
	 * @return the codigoTipoHabitacion
	 */
	public String getCodigoTipoHabitacion() {
		return codigoTipoHabitacion;
	}

	/**
	 * @param codigoTipoHabitacion the codigoTipoHabitacion to set
	 */
	public void setCodigoTipoHabitacion(String codigoTipoHabitacion) {
		this.codigoTipoHabitacion = codigoTipoHabitacion;
	}

	/**
	 * @return the nombreTipoHabitacion
	 */
	public String getNombreTipoHabitacion() {
		return nombreTipoHabitacion;
	}

	/**
	 * @param nombreTipoHabitacion the nombreTipoHabitacion to set
	 */
	public void setNombreTipoHabitacion(String nombreTipoHabitacion) {
		this.nombreTipoHabitacion = nombreTipoHabitacion;
	}

	/**
	 * @return the idEstadoTipoHabitacion
	 */
	public Integer getIdEstadoTipoHabitacion() {
		return idEstadoTipoHabitacion;
	}

	/**
	 * @param idEstadoTipoHabitacion the idEstadoTipoHabitacion to set
	 */
	public void setIdEstadoTipoHabitacion(Integer idEstadoTipoHabitacion) {
		this.idEstadoTipoHabitacion = idEstadoTipoHabitacion;
	}

	/**
	 * @return the listaEstado
	 */
	public List<SelectItem> getListaEstado() {
		return listaEstado;
	}

	/**
	 * @param listaEstado the listaEstado to set
	 */
	public void setListaEstado(List<SelectItem> listaEstado) {
		this.listaEstado = listaEstado;
	}

	/**
	 * @return the idTipoHabitacion
	 */
	public Integer getIdTipoHabitacion() {
		return idTipoHabitacion;
	}

	/**
	 * @param idTipoHabitacion the idTipoHabitacion to set
	 */
	public void setIdTipoHabitacion(Integer idTipoHabitacion) {
		this.idTipoHabitacion = idTipoHabitacion;
	}

	/**
	 * @return the listaHabitacion
	 */
	public List<TipoHabitacionTbl> getListaHabitacion() {
		return listaHabitacion;
	}

	/**
	 * @param listaHabitacion the listaHabitacion to set
	 */
	public void setListaHabitacion(List<TipoHabitacionTbl> listaHabitacion) {
		this.listaHabitacion = listaHabitacion;
	}

}
